import dayjs from 'dayjs';
import type { Dayjs } from 'dayjs';

export const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
export const DATE_MINUTE_FORMAT = 'YYYY-MM-DD HH:mm';
export const DATE_FORMAT = 'YYYY-MM-DD';
export const MONTH_FORMAT = 'YYYY-MM';
export const YEAR_FORMAT = 'YYYY';

/**
 * 获取当前时间戳,单位秒
 */
export const getTimestamp = ()=>{
    return dayjs().unix();
};

//常用日期范围选择
export type Range = '今天'|'本周'|'上一周'|'本月'|'本年'|'近30天'|'过去24小时'|'过去3天'|'过去7天'|'过去30天'|'过去90天'|'过去1年';

/**
 * @description: 预设常用的日期范围
 */
export const ranges:any = {
    '今天': [dayjs().startOf('day'), dayjs().endOf('day')],
    '本周': [dayjs().startOf('week'), dayjs().endOf('week')],
    '上一周': [dayjs().add(-1, 'week').startOf('week').add(0, 'day'), dayjs().add(-1, 'week').endOf('week').add(0, 'day')],
    '本月': [dayjs().startOf('month'), dayjs().endOf('month')],
    '近30天': [dayjs(), dayjs().add(30, 'day').endOf('day')],
    '本年': [dayjs().startOf('year'), dayjs().endOf('year')],

    '过去24小时': [dayjs().add(-24,'hour'), dayjs()],
    '过去3天': [dayjs().add(-3,'day'), dayjs()],
    '过去7天': [dayjs().add(-7,'day'), dayjs()],
    '过去30天': [dayjs().add(-30,'day'), dayjs()],
    '过去90天': [dayjs().add(-90,'day'), dayjs()],
    '过去1年': [dayjs().add(-1,'year'), dayjs()],
};

/**
 * @description: 预设常用的日期范围
 * @param { Array } arr 预设的范围字段 如：['今天','本月','过去7天','过去30天','过去90天']
 * @return { object } 对应需要显示的预设日期范围字段；
 */
export const getRanges = (arr:Range[]):{ label: string; value: any; }[] =>{
    if (!arr.length) return [];
    const reRanges = arr.map((key: string) => ({ label: key, value: ranges[key] }));
    return reRanges;
};

/**
 * 导出 dayjs 对象
 */
export const dateDayjs = dayjs;